package com.yaorange.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Map;

/**
 * @author 15332
 * @version 1.0
 * @date 2025/6/9 19:21
 * @description 令牌工具类
 */
@Component
public class JwtUtil {

//  密钥
  @Value(".1QWERTY2")
  private String secret;

  public JwtUtil() {
  }

  public JwtUtil(String secret) {
    this.secret = secret;
  }

  /**
   * 生成令牌
   */
  public String generateToken(Map<String, Object> claims){
    String token = Jwts.builder()
//     添加载荷
      .setClaims(claims)
//     过期时间
      .setExpiration(new Date(System.currentTimeMillis() +1000*60*60*24))
//      签名算法和密钥
      .signWith(SignatureAlgorithm.HS256,secret)
      .compact();
    return token;
  }
  /**
   * 令牌解析
   * 存在异常：令牌失效(被篡改)
   * 令牌过期
   */
  public Claims parseToken(String token){
    Claims parseClaims = Jwts.parser()
      .setSigningKey(secret)
      .parseClaimsJws(token)
      .getBody();
    return parseClaims;
  }
}
